home *** CD-ROM | disk | FTP | other *** search
/ Merciful 1 / Merciful - Disc 1.iso / software / a / asm_one / asm-onev1.25d.dms / in.adf / Replays / NP3Replay.S < prev    next >
Encoding:
Text File  |  1993-03-08  |  6.9 KB  |  441 lines

  1. * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
  2. * NoisePacker V3.0 PlayRoutine ©1991 Twins of Phenomena *
  3. * Used registers are d0-d7/a0-a6     It use lev6irq     *
  4. * How to use it? 1. bsr np_init                         *
  5. *                2. bsr np_music (every vert.)          *
  6. *                3. bsr np_end                          *
  7. * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
  8.  
  9. np_data=$60000
  10.  
  11. np_init:moveq    #1,d0
  12.     moveq    #0,d1
  13.     lea    np_data,a4
  14.     lea    $dff000,a5
  15.     lea    np_oldirq(pc),a6
  16.  
  17.     move.l    $78.w,(a6)+
  18.     move    d0,(a6)+
  19.     move.l    a4,a3
  20.     add    (a4)+,a3
  21.     move.l    a3,(a6)+
  22.     move    d1,(a6)+
  23. np_ini1:add    (a4)+,a3
  24.     move.l    a3,(a6)+
  25.     dbf    d0,np_ini1
  26.     move    (a4)+,d0
  27.     add.l    d0,a3
  28.  
  29.     move.l    #$82000006,(a6)+
  30.     move    #$0100,(a6)+
  31.     move.l    #np_portup,(a6)+
  32.     move.l    #np_portdown,(a6)+
  33.     move.l    #np_port,(a6)+
  34.     move.l    #np_vib,(a6)+
  35.     move.l    #np_port2,(a6)+
  36.     move.l    #np_vib2,(a6)+
  37.     move.l    #np_volslide,(a6)+
  38.     move.l    #np_arp,(a6)+
  39.     move.l    #np_songjmp,(a6)+
  40.     move.l    #np_setvol,(a6)+
  41.     move.l    #np_pattbreak,(a6)+
  42.     move.l    #np_filter,(a6)+
  43.     move.l    #np_setspeed,(a6)+
  44.  
  45.     moveq    #0,d0
  46.     move.l    a4,a6
  47.     add    -8(a4),a6
  48.     sub    #12,a6
  49. np_ini2:move.l    a3,2(a4)
  50.     move.l    a3,a2
  51.     move    14(a4),d0
  52.     add    d0,d0
  53.     add.l    d0,a2
  54.     move.l    a2,8(a4)
  55.     move    6(a4),d0
  56.     add    d0,d0
  57.     add.l    d0,a3
  58.     add    #16,a4
  59.     cmp.l    a4,a6
  60.     bne.s    np_ini2
  61.  
  62.     bset    #1,$bfe001
  63.     move    d1,$a8(a5)
  64.     move    d1,$b8(a5)
  65.     move    d1,$c8(a5)
  66.     move    d1,$d8(a5)
  67.     move    #$f,$96(a5)
  68.  
  69.     move    #$2000,$9a(a5)
  70.     lea    $bfd000,a0
  71.     move.b    #$7f,$d00(a0)
  72.     move.b    #$08,$e00(a0)
  73.     move.b    #$80,$400(a0)
  74.     move.b    #$01,$500(a0)
  75. np_ini3:btst    #0,$d00(a0)
  76.     beq.s    np_ini3
  77.     move.b    #$81,$d00(a0)
  78.     move    #$e000,$9a(a5)
  79.     rts
  80.  
  81. np_end:    moveq    #0,d0
  82.     lea    $dff000,a5
  83.     move    d0,$a8(a5)
  84.     move    d0,$b8(a5)
  85.     move    d0,$c8(a5)
  86.     move    d0,$d8(a5)
  87.     bclr    #1,$bfe001
  88.     move    #$f,$96(a5)
  89.     move    #$2000,$9a(a5)
  90.     move.l    np_oldirq(pc),$78.w
  91.     rts
  92.  
  93. np_music:
  94.     moveq    #0,d6
  95.     lea    $dff0d0,a4
  96.     lea    np_block(pc),a6
  97.     subq    #1,(a6)+
  98.     bhi    np_nonew
  99.  
  100.     move.l    (a6)+,a1
  101.     add    (a6)+,a1
  102.     move.l    (a6)+,a0
  103.     add    (a1),a0
  104.     move.l    (a6)+,d2
  105.     lea    np_data-8,a1
  106.     lea    np_voidat1(pc),a2
  107.  
  108.     moveq    #8,d0
  109.     moveq    #0,d1
  110.     moveq    #0,d4
  111.     moveq    #0,d5
  112. np_loop1:
  113.     move    (a0)+,d1
  114.  
  115.     tst    (a2)+
  116.     bpl.s    np_lop3
  117.     addq    #1,-(a2)
  118.     add    #32,a2
  119.     addq    #8,a4
  120.     bra    np_lop7
  121. np_lop3:
  122.     move.l    d2,a3
  123.     add.l    d1,a3
  124.     add    (a2),a3
  125.  
  126.     move.b    (a3)+,d1
  127.     bpl.s    np_lop4
  128.     ext    d1
  129.     addq    #1,d1
  130.     addq    #1,(a2)
  131.     move    d1,-(a2)
  132.     move    d6,8(a2)
  133.     add    #32,a2
  134.     addq    #8,a4
  135.     bra    np_lop7
  136. np_lop4:
  137.     move.b    (a3)+,d3
  138.     move.b    (a3)+,d4
  139.     addq    #3,(a2)+
  140.  
  141.     move.l    a1,a3
  142.     move.b    d1,d7
  143.     lsl    #8,d7
  144.     or.b    d3,d7
  145.     and    #$1f0,d7
  146.     bne.s    np_loop3
  147.  
  148.     add    (a2)+,a3
  149.     addq    #2,a2
  150.     addq    #2,a3
  151.     bra.s    np_loop4
  152. np_loop3:
  153.     move    d7,(a2)+
  154.     add    d7,a3
  155.     move    (a3)+,(a2)+
  156. np_loop4:
  157.     and    #$f,d3
  158.     move    d3,(a2)+
  159.     move    d4,(a2)+
  160.  
  161.     and    #$fe,d1
  162.     beq.s    np_loop5
  163.  
  164.     move    np_periods-2(pc,d1.w),d7
  165.  
  166.     subq    #3,d3
  167.     beq    np_setport
  168.     subq    #2,d3
  169.     beq    np_setport
  170.  
  171.     or    d0,d5
  172.     move    d7,(a2)+
  173.     move    d1,(a2)+
  174.     move    d6,(a2)+
  175.  
  176.     move.l    (a3)+,(a4)+
  177.     move    (a3)+,(a4)+
  178.     move.l    (a3)+,(a2)+
  179.     move    (a3)+,(a2)+
  180.  
  181.     subq    #6,d3
  182.     bmi.s    np_loop6
  183.     add    d3,d3
  184.     add    d3,d3
  185.     move.l    38(a6,d3.w),a3
  186.     jmp    (a3)
  187.  
  188. np_loop5:
  189.     add    #12,a2
  190.     addq    #6,a4
  191.     sub    #11,d3
  192.     bmi.s    np_loop6
  193.     add    d3,d3
  194.     add    d3,d3
  195.     move.l    38(a6,d3.w),a3
  196.     jmp    (a3)
  197.  
  198. np_periods:
  199.     dc.w    $0358,$0328,$02fa,$02d0,$02a6,$0280,$025c,$023a,$021a
  200.     dc.w    $01fc,$01e0,$01c5,$01ac,$0194,$017d,$0168,$0153,$0140
  201.     dc.w    $012e,$011d,$010d,$00fe,$00f0,$00e2,$00d6,$00ca,$00be
  202.     dc.w    $00b4,$00aa,$00a0,$0097,$008f,$0087,$007f,$0078,$0071
  203.  
  204. np_loop6:
  205.     move    -12(a2),(a4)+
  206. np_loop7:
  207.     move    -18(a2),(a4)
  208.     addq    #8,a2
  209. np_lop7:
  210.     sub    #$18,a4
  211.     lsr    #1,d0
  212.     bne    np_loop1
  213.  
  214.     move    d5,6(a4)
  215.     or    d5,(a6)+
  216.     move    (a6)+,-20(a6)
  217.     move.l    #np_irq1,$78.w
  218.     move.b    #$19,$bfde00
  219.  
  220.     bset    #0,(a6)+
  221.     beq.s    np_break
  222.     addq.b    #1,(a6)
  223.     cmp.b    #64,(a6)
  224.     bne.s    np_next
  225. np_break:
  226.     move.b    d6,(a6)
  227.     move.l    d6,-32(a2)
  228.     move.l    d6,-64(a2)
  229.     move.l    d6,-96(a2)
  230.     move.l    d6,-128(a2)
  231.     lea    np_block+2(pc),a6
  232.     move.l    (a6)+,a0
  233.     addq    #2,(a6)
  234.     move    (a6),d0
  235.     cmp    -4(a0),d0
  236.     bne.s    np_next
  237.     move    -2(a0),(a6)
  238. np_next:rts
  239.  
  240. np_setvol:
  241.     move    d4,-18(a2)
  242.     bra.w    np_loop6
  243.  
  244. np_pattbreak:
  245.     move.b    d6,4(a6)
  246.     bra.w    np_loop6
  247.  
  248. np_songjmp:
  249.     move.b    #63,5(a6)
  250.     move.b    d4,-9(a6)
  251.     bra.w    np_loop6
  252.  
  253. np_setspeed:
  254.     move    d4,2(a6)
  255.     bra    np_loop6
  256.  
  257. np_filter:
  258.     and.b    #$fd,$bfe001
  259.     or.b    d4,$bfe001
  260.     bra    np_loop6
  261.  
  262. np_setport:
  263.     add    #12,a2
  264.     addq    #8,a4
  265.     cmp    -12(a2),d7
  266.     slt    (a2)
  267.     beq.s    np_clear
  268.     move    d7,2(a2)
  269.     bra    np_loop7
  270. np_clear:
  271.     move    d6,2(a2)
  272.     bra    np_loop7
  273.  
  274. np_nonew:
  275.     lea    np_voidat1(pc),a0
  276.     moveq    #3,d0
  277. np_lop1:move    8(a0),d1
  278.     beq.w    np_lop2
  279.     subq    #8,d1
  280.     bhi.w    np_lop2
  281.     addq    #7,d1
  282.     add    d1,d1
  283.     add    d1,d1
  284.     move.l    20(a6,d1.w),a3
  285.     jmp    (a3)
  286. np_lop2:add    #32,a0
  287.     sub    #$10,a4
  288.     dbf    d0,np_lop1
  289.     rts
  290.  
  291. np_portup:
  292.     move    10(a0),d2
  293.     sub    d2,12(a0)
  294.     cmp    #$71,12(a0)
  295.     bpl.s    np_portup2
  296.     move    #$71,12(a0)
  297. np_portup2:
  298.     move    12(a0),6(a4)
  299.     bra.s    np_lop2
  300.  
  301. np_portdown:
  302.     move    10(a0),d2
  303.     add    d2,12(a0)
  304.     cmp    #$358,12(a0)
  305.     bmi.s    np_portdown2
  306.     move    #$358,12(a0)
  307. np_portdown2:
  308.     move    12(a0),6(a4)
  309.     bra.s    np_lop2
  310.  
  311. np_arp:    move    -2(a6),d2
  312.     sub    16(a6),d2
  313.     neg    d2
  314.     move.b    np_arplist(pc,d2.w),d2
  315.     beq.s    np_arp0
  316.     subq    #2,d2
  317.     beq.s    np_arp2
  318. np_arp1:move    10(a0),d2
  319.     lsr    #3,d2
  320.     and    #$e,d2
  321.     bra.s    np_arp3
  322. np_arp2:move    10(a0),d2
  323.     and    #$f,d2
  324.     add    d2,d2
  325. np_arp3:add    14(a0),d2
  326.     cmp    #$48,d2
  327.     bls.s    np_arp4
  328.     moveq    #$48,d2
  329. np_arp4:lea    np_periods-2(pc),a3
  330.     move    (a3,d2.w),6(a4)
  331.     bra    np_lop2
  332. np_arp0:move    12(a0),6(a4)
  333.     bra    np_lop2
  334.  
  335. np_arplist:
  336.     dc.b 0,1,2,0,1,2,0,1,2,0,1,2,0,1,2,0,1,2,0,1,2,0,1,2,0,1,2,0,1,2,0,1
  337.  
  338. np_sin:
  339.     dc.b $00,$18,$31,$4a,$61,$78,$8d,$a1,$b4,$c5,$d4,$e0,$eb,$f4,$fa,$fd
  340.     dc.b $ff,$fd,$fa,$f4,$eb,$e0,$d4,$c5,$b4,$a1,$8d,$78,$61,$4a,$31,$18
  341.  
  342. np_vib:    move    10(a0),d3
  343.     beq.s    np_vib2
  344.     move    d3,30(a0)
  345. np_vib2:    
  346.     move    16(a0),d3
  347.     lsr    #2,d3
  348.     and    #$1f,d3
  349.     moveq    #0,d2
  350.     move.b    np_sin(pc,d3.w),d2
  351.     move    30(a0),d3
  352.     and    #$f,d3
  353.     mulu    d3,d2
  354.     lsr    #7,d2
  355.     move    12(a0),d3
  356.     tst.b    17(a0)
  357.     bmi.s    np_vibsub
  358.     add    d2,d3
  359.     bra.s    np_vib3
  360. np_vibsub:
  361.     sub    d2,d3
  362. np_vib3:move    d3,6(a4)
  363.     move    30(a0),d3
  364.     lsr    #2,d3
  365.     and    #$3c,d3
  366.     add.b    d3,17(a0)
  367.     cmp.b    #20,d1
  368.     bne    np_lop2
  369.  
  370. np_volslide:
  371.     move    10(a0),d2
  372.     add.b    d2,7(a0)
  373.     bmi.s    np_vol3
  374.     cmp    #$40,6(a0)
  375.     bmi.s    np_vol2
  376.     move    #$40,6(a0)
  377. np_vol2:move    6(a0),8(a4)
  378.     bra    np_lop2
  379.  
  380. np_vol3:move    d6,6(a0)
  381.     move    d6,8(a4)
  382.     bra    np_lop2
  383.  
  384. np_port:move    10(a0),d2
  385.     beq.s    np_port2
  386.     move    d2,28(a0)
  387.  
  388. np_port2:
  389.     move    26(a0),d2
  390.     beq.s    np_rts
  391.     move    28(a0),d3
  392.     tst    24(a0)
  393.     bne.s    np_sub
  394.     add    d3,12(a0)
  395.     cmp    12(a0),d2
  396.     bgt.s    np_portok
  397.     move    d2,12(a0)
  398.     move    d6,26(a0)
  399. np_portok:
  400.     move    12(a0),6(a4)
  401. np_rts:    cmp.b    #16,d1
  402.     beq.s    np_volslide
  403.     bra    np_lop2
  404.  
  405. np_sub:    sub    d3,12(a0)
  406.     cmp    12(a0),d2
  407.     blt.s    np_portok
  408.     move    d2,12(a0)
  409.     move    d6,26(a0)
  410.     move    12(a0),6(a4)
  411.     cmp.b    #16,d1
  412.     beq    np_volslide
  413.     bra    np_lop2
  414.  
  415. np_irq1:
  416.     tst.b    $bfdd00
  417.     move.b    #$19,$bfde00
  418.     move.l    #np_irq2,$78.w
  419.     move    np_block+16(pc),$dff096
  420.     move    #$2000,$dff09c
  421.     rte
  422.  
  423. np_irq2:
  424.     tst.b    $bfdd00
  425.     move.l    np_voidat1+18(pc),$dff0d0
  426.     move    np_voidat1+22(pc),$dff0d4
  427.     move.l    np_voidat1+50(pc),$dff0c0
  428.     move    np_voidat1+54(pc),$dff0c4
  429.     move.l    np_voidat1+82(pc),$dff0b0
  430.     move    np_voidat1+86(pc),$dff0b4
  431.     move.l    np_voidat1+114(pc),$dff0a0
  432.     move    np_voidat1+118(pc),$dff0a4
  433.     move.l    np_oldirq(pc),$78.w
  434.     move    #$2000,$dff09c
  435.     rte
  436.  
  437. np_oldirq:    dc.l    0
  438. np_block:    blk.l    19,0
  439. np_voidat1:    blk.l    32,0
  440.  
  441.